package com.gzist.security4.exception;

import com.gzist.security4.utils.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletResponse;

/**
 *  全局异常处理器
 *  @author: 黄泽建
 */
@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e, HttpServletResponse response) {
        // 在这是直接使用全局异常处理器来处理未授权相应的，正常来说可能是另弄一个异常处理器或者是过滤器来进行处理
        e.printStackTrace();
        String message = (StringUtils.hasLength(e.getMessage()) ? e.getMessage() : "操作失败");
        //主动配置没有权限的响应数据
        if (message.equals("不允许访问")) {
            response.setStatus(403);
            return new Result(403, "没有权限", null);
        }
        return Result.error(message);
    }
}
